/*
 * Copyright (c) 2006 - 2022, webrx.cn All rights reserved.
 *
 */
package cn.webrx;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * <p>Project: app2022 - Ex6
 * <p>Powered by webrx On 2022-01-18 15:50:12
 *
 * @author webrx [webrx@126.com]
 * @version 1.0
 * @since 17
 */
public class Ex6 {
    private static int sum;
    private static int opk;
    private static int jbk;
    private static long lines;
    private static long nulllines;


    //  1. 统计java文件和所有java文件的行数和，
    public static void main(String[] args) {
        File file = new File("C:\\app2022");
        count(file);
        System.out.printf("%d 个 java文件", sum);
        System.out.printf("%d 个 jpg文件", opk);
        System.out.printf("%d 个 png文件%n", jbk);
        javalines(file);
        System.out.println(lines);
        nullline(file);
        System.out.println(nulllines);
    }

    //该方法计算所有文件空行数
    private static long nullline(File file) {
        if (file.isFile()) {
            try {
                //BufferedReader FileReader Reader 字符读取流，要求实参必须是文件对象，不能是目录对象。
                BufferedReader br = new BufferedReader(new FileReader(file));
                nulllines = br.lines().filter(e -> e.trim().length() == 0).count();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return nulllines;
    }


    //      计算java行数
    private static long javalines(File file) {
        if (file.isFile()) {
            try {
                var br = new BufferedReader(new FileReader(file));
                lines = br.lines().count();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return lines;
    }

    private static void count(String s) {
        count(new File(s));
    }

    //    计算文件
    private static void count(File f) {
        for (File file : f.listFiles()) {
            if (file.isDirectory()) {
                count(file);
            } else if (file.getName().toLowerCase().endsWith(".java")) {
                lines += javalines(file);
                nulllines += nullline(file);
                sum++;
            } else if (file.getName().toLowerCase().endsWith(".jpg")) {
                opk++;
            } else if (file.getName().toLowerCase().endsWith(".png")) {
                jbk++;
            } else {
            }
        }
    }
}
